package utwente.sem.eindopdracht;

/**
 * 
 * Een Onderdeel is een component van een Product dat niet gefabriceerd wordt in de fabriek.
 * 
 * @author Richard Heijblom & Mark Wienk
 *
 */
public class Onderdeel extends ProductType {

	private String leverancier;

	/**
	 * Een Onderdeel is een component van een Product dat niet gefabriceerd wordt in de fabriek.
	 */
	public Onderdeel() {}

	/**
	 * Verkrijg de leveranciersinformatie van een Onderdeel.
	 * @return leverancier
	 */
	public String getLeverancier() {
		return leverancier;
	}

	/**
	 * Voer de informatie over de leverancier van het Onderdeel in. 
	 * @param leverancier
	 */
	public void setLeverancier(String leverancier) {
		this.leverancier = leverancier;
	}

	/**
	 * Laat een wizard zien voor het bewerken van de Onderdeel velden.
	 */
	public void showOnderdeelWizard() {
		Tui.getUI().toonBericht("Geef een naam voor het onderdeel op");
		this.setName(Tui.getUI().getTekstInvoer());
		Tui.getUI().toonBericht("Geef een leverancier op:");
		this.setLeverancier(Tui.getUI().getTekstInvoer());
		Tui.getUI().toonBericht(getName() + " is opgeslagen.");
	}
	
	/**
	 * Laat een menu met CRUD operaties zien.
	 */
	public static void showMenu() {
		String[] keuzeOpties = {
				"Terug naar het vorige menu",
				"Nieuw onderdeel",
				"Bekijk onderdelen",
				"Bewerk onderdeel",
				"Verwijder onderdeel"
		};
		int id;
		switch(Tui.getUI().toonMenu("Maak een keuze uit het menu", keuzeOpties)) {
		case 0:
			return;
		case 1:
			Onderdeel onderdeel = new Onderdeel();
			onderdeel.showOnderdeelWizard();
			Controller.getController().getOnderdelenLijst().add(onderdeel);
			showMenu();
			break;
		case 2:
			Tui.getUI().toonLijst("De volgende onderdelen zijn in het systeem bekend:", Controller.getController().getOnderdelenLijst().toArray());
			Tui.getUI().toonBericht("");
			showMenu();
			break;
		case 3:
			if(Controller.getController().getOnderdelenLijst().size() > 0) {
				id = Tui.getUI().toonMenu("Geef een onderdeel id op:", Controller.getController().getOnderdelenLijst().toArray());
				Controller.getController().getOnderdelenLijst().get(id).showOnderdeelWizard();
			} else {
				Tui.getUI().toonBericht("Geen onderdelen aanwezig");
			}
			showMenu();
			break;
		case 4:
			if(Controller.getController().getOnderdelenLijst().size() > 0) {
				id = Tui.getUI().toonMenu("Geef een onderdeel id op", Controller.getController().getOnderdelenLijst().toArray());
				Controller.getController().getOnderdelenLijst().remove(id);
				Tui.getUI().toonBericht("Onderdeel succesvol verwijderd");
			} else {
				Tui.getUI().toonBericht("Geen producten aanwezig");
			}
			showMenu();
			break;
		}	
	}
}
